/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * JP_RegistraAccion.java
 *
 * Created on Jul 15, 2009, 4:51:39 PM
 */

package gui;
import delegate.GestionDelegate;
import controlacciones.ejb3.entity.TbArea;
import controlacciones.ejb3.entity.TbParametros;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosLecturas;
import helper.JP_Utiles_PanelModelo;
import helper.JP_Utiles_PanelBotonesMantenimiento;
import helper.Utiles_MensajesDialogo;
import java.awt.BorderLayout;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.jdesktop.application.Task;
import controlaccionescomercial.ControlAccionesComercialApp;
import helper.Utiles_Fecha_Cliente;
import java.util.Date;
import javax.swing.JInternalFrame;
import javax.swing.text.MaskFormatter;
import org.jdesktop.application.Action;

/**
 *
 * @author Vanessa
 */
public class JP_RegistrarAccion_Lecturas extends JP_Utiles_PanelModelo {

    /** Creates new form JP_RegistraAccion */
    public JP_RegistrarAccion_Lecturas() {
        inicializaComponentes();
        GestionDelegate.getInstance().Totfac_iniciaConfiguracion( 200 );
    }

    private void inicializaComponentes(){
        initComponents();      

        //Panel de Operaciones
        ArrayList alBotones = new ArrayList( 1 );
        alBotones.add( new Integer( JP_Utiles_PanelBotonesMantenimiento.BOTON_GUARDAR ) );
        alBotones.add( new Integer( JP_Utiles_PanelBotonesMantenimiento.BOTON_LIMPIAR ) );
        alBotones.add( new Integer( JP_Utiles_PanelBotonesMantenimiento.BOTON_CERRAR ) );

        jp_ope = new JP_Utiles_PanelBotonesMantenimiento( this, alBotones );
        jp_Operaciones.setLayout( new BorderLayout() );
        jp_Operaciones.add( jp_ope, BorderLayout.CENTER );            
        this.cargaComboArea();
        //this.habilitarPestania(0); //No habilitamos pestanias
        GestionDelegate.getInstance().Totfac_iniciaConfiguracion( 200 );
              
    }

    public JP_Utiles_PanelBotonesMantenimiento getJp_ope() {
        return jp_ope;
    }

    public void setJp_ope(JP_Utiles_PanelBotonesMantenimiento jp_ope) {
        this.jp_ope = jp_ope;
    }
    
    private void cargaComboArea(){        
        List listTbArea = null; // seteamos variable local
        List listaArea = comboBeanBindingArea1.getLista();
        listaArea.clear();
        try {
            listTbArea = GestionDelegate.getInstance().getListaArea();
        } catch (Exception e) {
            System.out.println( "Error en gestionDelegate.getListaArea()" );
            return;
        }
        this.comboBeanBindingArea1.setLista(listTbArea);
        this.bindingGroup.bind();
        this.cmbArea.updateUI();
        if( listTbArea.size() > 0 ){
            this.cmbArea.setSelectedIndex( 1 );
        }
    }

     private void cargaTabla(){
        TbArea seleccionado;
        seleccionado = (TbArea) this.cmbArea.getSelectedItem();
        cod_area = seleccionado.getCodArea();
        fec_Proceso = this.ftxtFecha.getText().trim();
        log_user = ControlAccionesComercialApp.LOG_USER;
        obser =  this.atxtObservacion.getText().trim();

        Utiles_Fecha_Cliente fecIni = new Utiles_Fecha_Cliente(fec_Proceso);
        if( !fecIni.isValida() ){
            Utiles_MensajesDialogo.mensajeAlerta("Ingrese una fecha valida");
            return;
        }

        try {
            listaDatos = GestionDelegate.getInstance().getListaLecturas(fec_Proceso, pagActual, pagTamanno);
        } catch (Exception ex) {
            //Logger.getLogger(JP_ListarAcciones_Area.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error al listar lecturas: " + ex.getMessage() );
        }
        if(listaDatos != null){
            if( listaDatos.isEmpty() ){
               helper.Utiles_MensajesDialogo.mensajeAlerta("No existen Lecturas para mostrar");
            }
        }
        construirTabla(listaDatos);
    }

    private void limpiarTabla(){
        listaDatos = null;
        construirTabla(listaDatos);
    }

    private void construirTabla( List datos){
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, datos, this.tbData);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding0 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idLectura}"));
        columnBinding0.setColumnName("N° ");
        columnBinding0.setColumnClass(Integer.class);
        columnBinding0.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding1 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${inscrinro}"));
        columnBinding1.setColumnName("INSCRINRO");
        columnBinding1.setColumnClass(String.class);
        columnBinding1.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding2 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nombre}"));
        columnBinding2.setColumnName("NOMBRE");
        columnBinding2.setColumnClass(String.class);
        columnBinding2.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding3 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${codtipoaccion}"));
        columnBinding3.setColumnName("TIPO ACCION");
        columnBinding3.setColumnClass(Integer.class);
        columnBinding3.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding4 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${medcodnro}"));
        columnBinding4.setColumnName("MEDCODNRO");
        columnBinding4.setColumnClass(String.class);
        columnBinding4.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding5 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${medfacfec}"));
        columnBinding5.setColumnName("MEDFACFEC");
        columnBinding5.setColumnClass(String.class);
        columnBinding5.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding6 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${medfecha}"));
        columnBinding6.setColumnName("MEDFECHA");
        columnBinding6.setColumnClass(String.class);
        columnBinding6.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding7 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${lecmed}"));
        columnBinding7.setColumnName("LECMED");
        columnBinding7.setColumnClass(String.class);
        columnBinding7.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding8 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${lectant}"));
        columnBinding8.setColumnName("LECANT");
        columnBinding8.setColumnClass(String.class);
        columnBinding8.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding9 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${fecant}"));
        columnBinding9.setColumnName("FECANT");
        columnBinding9.setColumnClass(String.class);
        columnBinding9.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding10 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${promedio}"));
        columnBinding10.setColumnName("PROMEDIO");
        columnBinding10.setColumnClass(String.class);
        columnBinding10.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding11 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${fechactu}"));
        columnBinding11.setColumnName("FECHACTU");
        columnBinding11.setColumnClass(String.class);
        columnBinding11.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding12 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${flagRegistrada}"));
        columnBinding12.setColumnName("REGISTRADA");
        columnBinding12.setColumnClass(Boolean.class);
        columnBinding12.setEditable(false);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding13 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${logUser}"));
        columnBinding13.setColumnName("LOGUSER");
        columnBinding13.setColumnClass(String.class);
        columnBinding13.setEditable(false);

        bindingGroup.addBinding(jTableBinding);
        bindingGroup.bind();
    }

   public void inicializaReferencias(){
//        jp_dc.setRef(getRef());
//        jp_dc.setRefDep(this);
//        jp_ma.setRef(getRef());
//        jp_ma.setRefDep(this);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always re-generated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        comboBeanBindingTbTipoAccionClasificacionAccionArea1 = new beansbinding.ComboBeanBindingTbTipoAccionClasificacionAccionArea();
        comboBeanBindingArea1 = new beansbinding.ComboBeanBindingArea();
        buttonGroup1 = new javax.swing.ButtonGroup();
        jp_DocumentoIdentificacion = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        cmbArea = new javax.swing.JComboBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        atxtObservacion = new javax.swing.JTextArea();
        jLabel4 = new javax.swing.JLabel();
        try{
            this.mascara = new javax.swing.text.MaskFormatter("##/##/####");            
        }catch(Exception e){
        }
        ftxtFecha = new javax.swing.JFormattedTextField();
        this.ftxtFecha = new javax.swing.JFormattedTextField(mascara);
        btnVerArchivo = new javax.swing.JButton();
        jp_Operaciones = new javax.swing.JPanel();
        jp_tabla = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tbData = new javax.swing.JTable();
        btnSiguiente = new javax.swing.JButton();
        btnAnterior = new javax.swing.JButton();
        btnPrimero = new javax.swing.JButton();
        btnUltimo = new javax.swing.JButton();
        lblMensaje = new javax.swing.JLabel();

        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class).getContext().getResourceMap(JP_RegistrarAccion_Lecturas.class);
        jp_DocumentoIdentificacion.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jp_DocumentoIdentificacion.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jp_DocumentoIdentificacion.border.titleFont"))); // NOI18N
        jp_DocumentoIdentificacion.setName("jp_DocumentoIdentificacion"); // NOI18N

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jLabel3.setFont(resourceMap.getFont("jLabel3.font")); // NOI18N
        jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
        jLabel3.setName("jLabel3"); // NOI18N

        cmbArea.setName("cmbArea"); // NOI18N

        org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${lista}");
        org.jdesktop.swingbinding.JComboBoxBinding jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, comboBeanBindingArea1, eLProperty, cmbArea);
        bindingGroup.addBinding(jComboBoxBinding);

        cmbArea.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                cmbAreaKeyPressed(evt);
            }
        });

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        atxtObservacion.setColumns(20);
        atxtObservacion.setRows(5);
        atxtObservacion.setName("atxtObservacion"); // NOI18N
        atxtObservacion.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                atxtObservacionKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(atxtObservacion);

        jLabel4.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N
        jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
        jLabel4.setName("jLabel4"); // NOI18N

        ftxtFecha.setText(resourceMap.getString("ftxtFecha.text")); // NOI18N
        ftxtFecha.setName("ftxtFecha"); // NOI18N
        ftxtFecha.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                ftxtFechaKeyPressed(evt);
            }
        });

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class).getContext().getActionMap(JP_RegistrarAccion_Lecturas.class, this);
        btnVerArchivo.setAction(actionMap.get("mostrarLecturas")); // NOI18N
        btnVerArchivo.setFont(resourceMap.getFont("btnVerArchivo.font")); // NOI18N
        btnVerArchivo.setIcon(resourceMap.getIcon("btnVerArchivo.icon")); // NOI18N
        btnVerArchivo.setText(resourceMap.getString("btnVerArchivo.text")); // NOI18N
        btnVerArchivo.setName("btnVerArchivo"); // NOI18N
        btnVerArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVerArchivoActionPerformed(evt);
            }
        });
        btnVerArchivo.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                btnVerArchivoKeyPressed(evt);
            }
        });

        javax.swing.GroupLayout jp_DocumentoIdentificacionLayout = new javax.swing.GroupLayout(jp_DocumentoIdentificacion);
        jp_DocumentoIdentificacion.setLayout(jp_DocumentoIdentificacionLayout);
        jp_DocumentoIdentificacionLayout.setHorizontalGroup(
            jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jp_DocumentoIdentificacionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel4)
                    .addComponent(jLabel1)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(cmbArea, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jp_DocumentoIdentificacionLayout.createSequentialGroup()
                        .addComponent(ftxtFecha, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(122, 122, 122)
                        .addComponent(btnVerArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 567, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(27, Short.MAX_VALUE))
        );
        jp_DocumentoIdentificacionLayout.setVerticalGroup(
            jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jp_DocumentoIdentificacionLayout.createSequentialGroup()
                .addGroup(jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(cmbArea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(ftxtFecha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnVerArchivo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jp_DocumentoIdentificacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jp_DocumentoIdentificacionLayout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addGap(50, 50, 50))
                    .addGroup(jp_DocumentoIdentificacionLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 55, Short.MAX_VALUE)
                        .addContainerGap())))
        );

        jp_Operaciones.setName("jp_Operaciones"); // NOI18N

        javax.swing.GroupLayout jp_OperacionesLayout = new javax.swing.GroupLayout(jp_Operaciones);
        jp_Operaciones.setLayout(jp_OperacionesLayout);
        jp_OperacionesLayout.setHorizontalGroup(
            jp_OperacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 728, Short.MAX_VALUE)
        );
        jp_OperacionesLayout.setVerticalGroup(
            jp_OperacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 22, Short.MAX_VALUE)
        );

        jp_tabla.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jp_tabla.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jp_tabla.border.titleFont"))); // NOI18N
        jp_tabla.setName("jp_tabla"); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        tbData.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        tbData.setName("tbData"); // NOI18N
        jScrollPane2.setViewportView(tbData);

        btnSiguiente.setIcon(resourceMap.getIcon("btnSiguiente.icon")); // NOI18N
        btnSiguiente.setText(resourceMap.getString("btnSiguiente.text")); // NOI18N
        btnSiguiente.setName("btnSiguiente"); // NOI18N
        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSiguienteActionPerformed(evt);
            }
        });

        btnAnterior.setIcon(resourceMap.getIcon("btnAnterior.icon")); // NOI18N
        btnAnterior.setText(resourceMap.getString("btnAnterior.text")); // NOI18N
        btnAnterior.setName("btnAnterior"); // NOI18N
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });

        btnPrimero.setIcon(resourceMap.getIcon("btnPrimero.icon")); // NOI18N
        btnPrimero.setText(resourceMap.getString("btnPrimero.text")); // NOI18N
        btnPrimero.setName("btnPrimero"); // NOI18N
        btnPrimero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPrimeroActionPerformed(evt);
            }
        });

        btnUltimo.setIcon(resourceMap.getIcon("btnUltimo.icon")); // NOI18N
        btnUltimo.setText(resourceMap.getString("btnUltimo.text")); // NOI18N
        btnUltimo.setName("btnUltimo"); // NOI18N
        btnUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnUltimoActionPerformed(evt);
            }
        });

        lblMensaje.setForeground(resourceMap.getColor("lblMensaje.foreground")); // NOI18N
        lblMensaje.setText(resourceMap.getString("lblMensaje.text")); // NOI18N
        lblMensaje.setName("lblMensaje"); // NOI18N

        javax.swing.GroupLayout jp_tablaLayout = new javax.swing.GroupLayout(jp_tabla);
        jp_tabla.setLayout(jp_tablaLayout);
        jp_tablaLayout.setHorizontalGroup(
            jp_tablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 716, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jp_tablaLayout.createSequentialGroup()
                .addComponent(lblMensaje, javax.swing.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(btnPrimero)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnAnterior)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSiguiente)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnUltimo))
        );
        jp_tablaLayout.setVerticalGroup(
            jp_tablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jp_tablaLayout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jp_tablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblMensaje, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                    .addGroup(jp_tablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(btnUltimo)
                        .addComponent(btnSiguiente)
                        .addComponent(btnAnterior)
                        .addComponent(btnPrimero)))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jp_DocumentoIdentificacion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jp_tabla, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jp_Operaciones, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jp_DocumentoIdentificacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jp_tabla, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jp_Operaciones, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        bindingGroup.bind();
    }// </editor-fold>//GEN-END:initComponents

    private void cmbAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbAreaKeyPressed
        if( evt.getKeyCode() == evt.VK_ENTER ){
            this.ftxtFecha.requestFocus();
        }
    }//GEN-LAST:event_cmbAreaKeyPressed

    private void atxtObservacionKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_atxtObservacionKeyPressed
        if( evt.getKeyCode() == evt.VK_ENTER ){            
        }
    }//GEN-LAST:event_atxtObservacionKeyPressed

    private void btnVerArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVerArchivoActionPerformed
        
    }//GEN-LAST:event_btnVerArchivoActionPerformed

    private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAnteriorActionPerformed
        this.anterior();
        this.cargaTabla();
    }//GEN-LAST:event_btnAnteriorActionPerformed

    private void btnSiguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSiguienteActionPerformed
        this.siguiente();
        this.cargaTabla();
    }//GEN-LAST:event_btnSiguienteActionPerformed

    private void btnPrimeroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrimeroActionPerformed
        this.primero();
        this.cargaTabla();
    }//GEN-LAST:event_btnPrimeroActionPerformed

    private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUltimoActionPerformed
        this.ultimo();
        this.cargaTabla();
    }//GEN-LAST:event_btnUltimoActionPerformed

    private void ftxtFechaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_ftxtFechaKeyPressed
        if(evt.getKeyCode()==evt.VK_ENTER){
            this.btnVerArchivo.requestFocus();
        }
    }//GEN-LAST:event_ftxtFechaKeyPressed

    private void btnVerArchivoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_btnVerArchivoKeyPressed
        
    }//GEN-LAST:event_btnVerArchivoKeyPressed

    public void habilitarComponentes( boolean ban){
        this.cmbArea.setEnabled(ban);
        this.ftxtFecha.setEnabled(ban);
        this.atxtObservacion.setEnabled(ban);
        this.jp_Operaciones.setEnabled(ban);
        this.jp_ope.setEnabled(ban);
        this.jp_ope.getBtnGuardar().setEnabled(ban);
        this.jp_ope.getBtnLimpiar().setEnabled(ban);
        this.btnVerArchivo.setEnabled(ban);
        this.btnAnterior.setEnabled(ban);
        this.btnPrimero.setEnabled(ban);
        this.btnSiguiente.setEnabled(ban);
        this.btnUltimo.setEnabled(ban);
        this.jp_tabla.setEnabled(ban);
        this.tbData.setEnabled(ban);
        this.jScrollPane2.setEnabled(ban);
    }

    public void mostrarRegistrosLecturas(){
        limpiarTabla();
        habilitarComponentes( false );        
        String mensaje = "";
        String id_parametro = "L";
        String ban = "";
        boolean cargar = false;
        fec_Proceso = this.ftxtFecha.getText().trim();
        helper.Utiles_Fecha uf = new helper.Utiles_Fecha(fec_Proceso);
        Date fechaProceso = uf.getDate() ;

        //Verificar si el archivo ya ha sido procesado
        mensaje = "Verificando si archivo ya ha sido procesado.............. ";
        this.lblMensaje.setText(mensaje);
        try {
            if (GestionDelegate.getInstance().verificarArchivoProcesadoLecturas(fec_Proceso)) {
                ban = "Archivo ya ha sido procesado";
                helper.Utiles_MensajesDialogo.mensajeAlerta( ban );                
                cargar = true;
            }else{
                ban = "bien";
            }
        } catch (SQLException ex) {
            ban = ex.getMessage();
            System.out.println(ban);
            helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
        }
        System.out.println("Resultado de la verificacion : "+ban);

        //Verificar si se esta ejecuntado el proyecto de integracion
        mensaje = "Verificando si el Job ha sido iniciado.............. ";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        if(ban.equalsIgnoreCase("bien")){
            try {
                if (!GestionDelegate.getInstance().seEstaEjecutandoJob2(id_parametro) && !GestionDelegate.getInstance().verificarJobEjecutando("JobEjecutaIntegracionLecturas")) {
                   ban = "bien";
                } else {
                    ban = "El proceso de integracion ya ha sido iniciado por otro usuario";                    
                }
            } catch (SQLException ex) {
                ban = ex.getMessage();                
            }
            if (!ban.equalsIgnoreCase("bien")) {
                System.out.println(ban);
                helper.Utiles_MensajesDialogo.mensajeFracaso(ban);
            }
        }

        //Actualizar parametros
        mensaje = "Actualizar parametros.............. ";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        if(ban.equalsIgnoreCase("bien")){
            try {
                TbParametros tbParametros = new TbParametros();
                tbParametros.setIdParametro(id_parametro);
                tbParametros.setParam9(Boolean.TRUE);
                GestionDelegate.getInstance().actualizarParametros(tbParametros);

                TbParametros tbParametros1 = new TbParametros();
                tbParametros1.setIdParametro("7");
                tbParametros1.setFecha(fechaProceso);
                GestionDelegate.getInstance().actualizarParametros(tbParametros1);

                TbParametros tbParametros2 = new TbParametros();
                tbParametros2.setIdParametro("8");
                tbParametros2.setParam5(ControlAccionesComercialApp.LOG_USER);
                GestionDelegate.getInstance().actualizarParametros(tbParametros2);
                ban = "bien";
            } catch (Exception ex) {
                ban = ex.getMessage();                
            }
            if (!ban.equalsIgnoreCase("bien")) {
                System.out.println(ban);
                helper.Utiles_MensajesDialogo.mensajeFracaso(ban);
            }
        }
        //Copiar archivos        
        if( ban.equalsIgnoreCase("bien") ){
            try {
                mensaje = "Copiando archivos.............. ";
                this.lblMensaje.setText(mensaje);
                System.out.println(mensaje);
                ban = GestionDelegate.getInstance().copiarArchivosLecturas();
            } catch (Exception ex) {
                ban  = ex.getMessage();                
            }
            System.out.println("resultado de la copia de archivos:" + ban);
            if( !ban.equalsIgnoreCase("bien") ){
                System.out.println(ban);
                helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
            }
        }
        //Ejecutar integracion        
        if( ban.equalsIgnoreCase("bien") ){
            try {
                mensaje = "Ejecutando integracion.............. ";
                this.lblMensaje.setText(mensaje);
                System.out.println(mensaje);
                ban = GestionDelegate.getInstance().ejecutarIntegracionLecturas();
                System.out.println(ban);
            } catch (SQLException ex) {
                ban = ex.getMessage();                
            }
            if( !ban.equalsIgnoreCase("bien") ){
                System.out.println(ban);
                helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
            }
        }
//        //Ejecutar la copia del lectura1.dbf
//        mensaje = "Copiando lectura1.dbf.............. ";
//        this.lblMensaje.setText(mensaje);
//        System.out.println(mensaje);
//        if( ban.equalsIgnoreCase("bien") ){
//            try {
//                ban = GestionDelegate.getInstance().ejecutaCopiaFacturas(fec_Proceso, log_user);
//                cargar = true;
//            } catch (SQLException ex) {
//                ban = ex.getMessage();
//            }
//            if( !ban.equalsIgnoreCase("bien") ){
//                System.out.println(ban);
//                helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
//            }else{
//                System.out.println("FIN: "+ ban);
//            }
//        }
        //Ejecutar integracion
        TbParametros tbParametrosBan = null;
        if( ban.equalsIgnoreCase("bien") ){
            mensaje = "Consultando resultado de la integracion.............. ";
            this.lblMensaje.setText(mensaje);
            System.out.println(mensaje);
            try {
                tbParametrosBan = GestionDelegate.getInstance().buscarParametro("6");
                ban = tbParametrosBan.getParam5().trim();
                System.out.println(ban);
            } catch (Exception ex) {
                ban = ex.getMessage();
            }
            if( !ban.equalsIgnoreCase("bien") ){
                System.out.println(ban);
                helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
            }
        }
        if( ban.equalsIgnoreCase("bien")){
            helper.Utiles_MensajesDialogo.mensajeExito();
        }else{
            //helper.Utiles_MensajesDialogo.mensajeFracaso( "Error al ejecutar el proceso de integracion" );
        }
        //Cargar tabla
        mensaje = "Cargando tabla................................. ";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        try {
            getNumPaginas();
            cargaTabla();
//            if( ban.equalsIgnoreCase("bien") || cargar == true){
//                cargaTabla();
//            }else{
//                helper.Utiles_MensajesDialogo.mensajeFracaso( "Error al Cargar registros: " + ban );
//            }
        } catch (Exception ex) {
            //Logger.getLogger(JP_RegistrarAccion_Factura.class.getName()).log(Level.SEVERE, null, ex);
        }
        mensaje = "Proceso terminado.......";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        habilitarComponentes( true );
        atxtObservacion.requestFocus();
    }

    @Action
    public Task mostrarLecturas() {
        return new MuestraLecturas(org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class));
    }

    private class MuestraLecturas extends org.jdesktop.application.Task<Object, Void> {
        MuestraLecturas(org.jdesktop.application.Application app) {
            super(app);
        }
        @Override protected Object doInBackground() {
            
            System.out.println(ftxtFecha.getText().trim());
            if(ftxtFecha.getText().trim().equalsIgnoreCase("")|| ftxtFecha.getText().trim().equalsIgnoreCase("/  /")){
                helper.Utiles_MensajesDialogo.mensajeAlerta("Falta ingresar la fecha de proceso...");
                ftxtFecha.requestFocus();
            }else{
                limpiarTabla();
                mostrarRegistrosLecturas();
            }
            atxtObservacion.requestFocus();
            return null;  // return your result
        }
        @Override protected void succeeded(Object result) {
        }
    }

    @Override
    public Task guardar() {
        return new Guarda(org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class));        
    }
    
    private class Guarda extends org.jdesktop.application.Task<Object, Void> {
        Guarda(org.jdesktop.application.Application app) {
            super(app);
        }
        @Override protected Object doInBackground() {
            jp_ope.getBtnGuardar().setEnabled(false);
            jp_ope.getBtnLimpiar().setEnabled(false);
            ((JInternalFrame)getPadre()).setEnabled(false);
            guardarSegundoPlano();
            jp_ope.getBtnLimpiar().setEnabled(true);
            ((JInternalFrame)getPadre()).setEnabled(true);
            return null;  // return your result
        }
        @Override protected void succeeded(Object result) {
        }
    }

    public void guardarSegundoPlano(){
        habilitarComponentes(false);
        limpiarTabla();
        String mensaje;
        
        String rpta = "";
        TbArea seleccionado;
        seleccionado = (TbArea) this.cmbArea.getSelectedItem();
        cod_area = seleccionado.getCodArea();
        fec_Proceso = this.ftxtFecha.getText().trim();
        log_user = ControlAccionesComercialApp.LOG_USER;
        obser =  this.atxtObservacion.getText().trim();
        try{
            if(ftxtFecha.getText().trim().equalsIgnoreCase("")|| ftxtFecha.getText().trim().equalsIgnoreCase("/  /")){
                helper.Utiles_MensajesDialogo.mensajeAlerta("Ingrese la fecha de Proceso..");
            }else{
                //Ejecutar el procedimiento Procesar Facturas
                mensaje = "Procesando Lecturas.....Este proceso puede tardar varios minutos......";
                this.lblMensaje.setText(mensaje);
                System.out.println(mensaje);
                rpta = GestionDelegate.getInstance().procesarLecturas(cod_area, fec_Proceso, log_user, obser);
                if( rpta.equalsIgnoreCase("bien")){
                    helper.Utiles_MensajesDialogo.mensajeExito();
                }else{
                    helper.Utiles_MensajesDialogo.mensajeFracaso(rpta);
                }
                mensaje = "Proceso terminado.......";
                this.lblMensaje.setText(mensaje);
                System.out.println(mensaje);
                cargaTabla();
               limpiarRegistro();
            }
        }catch( Exception ex ){
            ex.printStackTrace();
            jp_ope.getBtnGuardar().setEnabled(true);
            Utiles_MensajesDialogo.mensajeError("Error al realizar la operación");
        }
        habilitarComponentes(true);
    }

    public void limpiarRegistro(){
        //this.jp_ope.getBtnGuardar().setEnabled(true);
        //this.atxtObservacion.setText("");
        //this.cmbArea.setSelectedIndex(0);
        //this.ftxtFecha.setText( "" );
        this.cmbArea.requestFocus();
    }

    @Override
    public Task limpiar() {
        limpiarRegistro();
        //this.cmbTipoAccion.setSelectedIndex(-1);
        return null;
    }
    
    @Override
    public Task cerrar() {
        this.cerrarPadre();
        return null;
    }

    //Paginacion
     public void primero(){
        pagActual = 0;
        System.out.println("pagActual: " + pagActual);
    }

    public void siguiente() {
        if( pagActual < this.pagUltima){
            pagActual++;
        }
        System.out.println("pagActual: " + pagActual);
    }

    public void anterior() {
        pagActual--;
        if (pagActual < 0) {
            pagActual = 0;
        }
        System.out.println("pagActual: " + pagActual);
    }

    public void ultimo(){
        pagActual = pagUltima;
    }

    public void getNumPaginas(){
        try {
            int num_registros = getNumRegistros();
            if (pagTamanno > 0) {
                double ultima = num_registros / pagTamanno;
                System.out.println("ultima:" + ultima);
                pagUltima = (int) java.lang.Math.ceil(ultima);
                System.out.println("pagUltima: " + pagUltima);
            }
        } catch (Exception e) {
        }
        System.out.println("pagUltima: " + pagUltima);
    }

    public int getNumRegistros(){
        int num = 40;
        TbArea area;
        String fechaIni;
        try {
            area = (TbArea) this.cmbArea.getSelectedItem();
        } catch (Exception e) {
            return 1;
        }

        fechaIni = this.ftxtFecha.getText().trim();

        Utiles_Fecha_Cliente fecIni = new Utiles_Fecha_Cliente(fechaIni);
        if( !fecIni.isValida() ){
            Utiles_MensajesDialogo.mensajeAlerta("Ingrese una fecha de inicio valida");
            return 1;
        }

        try {
            num = GestionDelegate.getInstance().getNumRegistrosLecturas(fechaIni);
            System.out.println( "Num de Registros: " + num );
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return num;
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextArea atxtObservacion;
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnPrimero;
    private javax.swing.JButton btnSiguiente;
    private javax.swing.JButton btnUltimo;
    private javax.swing.JButton btnVerArchivo;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JComboBox cmbArea;
    private beansbinding.ComboBeanBindingArea comboBeanBindingArea1;
    private beansbinding.ComboBeanBindingTbTipoAccionClasificacionAccionArea comboBeanBindingTbTipoAccionClasificacionAccionArea1;
    private javax.swing.JFormattedTextField ftxtFecha;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JPanel jp_DocumentoIdentificacion;
    private javax.swing.JPanel jp_Operaciones;
    private javax.swing.JPanel jp_tabla;
    private javax.swing.JLabel lblMensaje;
    private javax.swing.JTable tbData;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables
    private JP_Utiles_PanelBotonesMantenimiento jp_ope;
    
    private org.jdesktop.swingbinding.JTableBinding jTableBinding;
    private List<TableBeanBinding_DatosLecturas> listaDatos;
    private MaskFormatter mascara;
    String cod_area;
    String fec_Proceso;
    String log_user;
    String obser;

    //Paginacion
    private int pagActual = 0;
    //private int maxResults;
    private int pagTamanno = 200;
    private int numRegistros = 1;
    int pagUltima = 0;
}
